// 在该文件写该模块接口调用
import axios from "axios";
// 导入
import { Message } from "element-ui";
import { getLocal, removeLocal } from "@/utils/local.js";
import router from "@/router/index.js";

// 创建一个axios副本

let _fetch = axios.create({
  // 修改一些默认属性
  baseURL: process.env.VUE_APP_URL,
  // 跨域带cookie到后端
  withCredentials: true,
});

// 添加请求拦截器
_fetch.interceptors.request.use(
  function(config) {
    // 在发送请求之前做些什么
    // 在请求拦截里面统一加上请求头
    config.headers.token = getLocal("token");

    return config;
  },
  function(error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

// 添加响应拦截器
_fetch.interceptors.response.use(
  function(response) {
    // 对响应数据做点什么
    if (response.data.code == 200) {
      return response;
    } else if (response.data.code == 206) {
      // token错误,要么token失效   非法调用  回到登录页面(1.清除token  2.调转到)
      removeLocal("token");
      Message.error(response.data.message);
      router.push("/login");
      return Promise.reject(response.data.message);
    } else {
      //失败的时候 提示一下 并且跳转到.catch
      Message.error(response.data.message);
      // 并且跳转到.catch
      return Promise.reject(response.data.message);
    }
  },
  function(error) {
    // 对响应错误做点什么
    return Promise.reject(error);
  }
);

export default _fetch;
